SQL の集約
GROUP BY と HAVING
HAVING により、GROUP BY で集約されたデータセットにフィルタリングが適用
WHERE 句は集約される前に適用され、HAVING は集約された後に適用される
ROLLUP、CUBE、GROUPING SETS というグループ化の方法を指定するキーワードも使える
GROUP BY を使わずに、特定のグループの中の特定の行 (ある値が最大のもの、とか) を見つける方法
以下は、特定のカテゴリの中で値が最大の行を見つける方法
同じカテゴリで、値が大きいものを左結合して、右側の値が NULL のものを見つける
code:xxx
SELECT l.Category, l.Name, l.Value AS MaxValue
FROM Foo AS l
LEFT JOIN Foo AS r
ON l.Category = r.Category
AND l.Value < r.Value
WHERE r.Value IS NULL;
参考文献